<?php
 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Class Mpayment extends MY_Model
{
    public function __construct()
    {
        parent::__construct();
    }
    
    
    public function chargincardDB($id)
    {
        $ok = '';
        $timeok = time();
        
            
        $sql = "SELECT * FROM user WHERE id = ".$id;
        $q = $this->db->query($sql);
        if($q->num_rows() > 0)
        {
            // info member
            $data           = $q->row();
            $coin           = $data->coin;
            $total_amount   = $data->total_amount;
            $id_user        = $data->id;
            $username       = $data->username;
            $email          = $data->email;
            $mobile         = $data->phone;
            
            //info card
            $codeCard       = $this->security->xss_clean($this->getParamString('codeCard'));
            $serieCard      = $this->security->xss_clean($this->getParamString('serieCard'));
            $gettype        = $this->security->xss_clean($this->getParamString('typeCard'));
            
            switch($gettype)
            {
                case '1':
                    $typeCard = 'VMS';
                    $typeCard2 = 'MOBIFONE';
                    break;
                case '2':
                    $typeCard = 'VNP';
                    $typeCard2 = 'VINAPHONE';
                    break;
                case '3':
                    $typeCard = 'VIETTEL';
                    $typeCard2 = 'VIETTEL';
                    break;
                case '4':
                    $typeCard = 'VCOIN';
                    $typeCard2 = 'VCOIN';
                    break;
                case '5':
                    $typeCard = 'GATE';
                    $typeCard2 = 'GATE';
                    break;
                default:
                    $typeCard = 'VIETTEL';
                    $typeCard2 = 'VIETTEL';
            }
            
            $ty = $this->card_1pay('3ccywv60kuvjj24ue9mj','xggqzbohlj0aeszqkf1aklsdkf79tvsin',$codeCard,$serieCard,$typeCard2);
            $stts = $ty->status;
            $monney_ok = $ty->amount;

            if($stts == 00)
            {
                $revice_money = $monney_ok;
                $coinplus = ($revice_money/100); // t? l? Coin b?ng 10000:100
                $ok = 200;
                
                $this->db->update('user',array("coin" => ($coin + $coinplus), 'money' => $money + $revice_money, 'total_amount' => $total_amount + $revice_money ),"id = '".$id_user."'");
                
                $codeTrade = 'GAME-'.date('YmdHis').'-'.$this->generateCode(8);
                $content = 'Nạp tiền vào tài khoản bằng thẻ cào ngày '.date('H:i:s d/m/Y').' <b>Mã thẻ cào</b> '.$codeCard.', <b>Serial thẻ cào:</b> '.$serieCard.', <b>Loại thẻ:</b> '.$typeCard.'<br /> <b>Mã giao dịch:</b>' .$codeTrade;
                
                $data_trade = array('codeTrade' => $codeTrade, 'content' => $content, 'id_user' => $id, 'statusTrade' => 1, 'created' => date('Y-m-d H:i:s'));
                
                $this->db->insert('logTrade', $data_trade);
                
                $data_log = array(
                    "id_user"           =>   $id_user,
                    "serialCard"        =>   $serieCard,
                    "codeCard"          =>   $codeCard,
                    "typeCard"          =>   $typeCard,
                    "created"           =>   date('Y-m-d H:i:s'),
                );
                $this->db->insert('log_chargingCard', $data_log);
                
                return $ok;
            }else{
                return $this->error($stts);
            }
        }else{
            return 401;
        }
    }
    
    private function card_1pay($access_key,$secret,$pin,$serial,$type)
	{
		$data = "access_key=". $access_key . "&pin=" . $pin . "&serial=" . $serial . "&type=" . $type;
		$signature = hash_hmac("sha256", $data, $secret);
		
		$params = array(
			'access_key'			   => $access_key,
			'pin'		               => $pin,
			'serial'			       => $serial,
			'type'			           => $type,
			'signature'                => $signature
		);
		
		$post_field = '';
		foreach ($params as $key => $value){
			if ($post_field != '') $post_field .= '&';
			$post_field .= $key."=".$value;
		}
		
		$api_url = "https://api.1pay.vn/card-charging/v2/topup";
		
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL,$api_url);
		curl_setopt($ch, CURLOPT_ENCODING , 'UTF-8');
		curl_setopt($ch, CURLOPT_VERBOSE, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $post_field);
		$result = curl_exec($ch);
		$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
		$error = curl_error($ch);
		
		$datas = json_decode($result);
		$arr['status'] = $datas->status;
		$arr['amount'] = $datas->amount;
		return (object)$arr;
	}
    
    private function error($t)
    {
        switch($t)
        {
            case '07':
                $msg = 'Thẻ đã được sử dụng, hoặc thẻ sai';
                break;
            case '08':
                $msg = 'Thẻ bị khóa';
                break;
            case '09':
                $msg = 'Thẻ hết hạn sử dụng';
                break;
            case '10':
                $msg = 'Thẻ chưa được kích hoạt hoặc không tồn tại';
                break;
            case '11':
                $msg = 'Mã thẻ sai định dạng';
                break;
            case '12':
                $msg = 'Sai số serial của thẻ';
                break;
            case '13':
                $msg = 'Mã thẻ và số serial không khớp';
                break;
            case '14':
                $msg = 'Thẻ không tồn tại';
                break;
            case '15':
                $msg = 'Thẻ không sử dụng được';
                break;
            case '16':
                $msg = 'Nhập sai liên tiếp vượt quá giới hạn cho phép';
                break;
            default:
                $msg = 'Lỗi, không xác định, vui lòng kiểm tra lại';
                break;
        }
        return $msg;
    }
    
    public function chargingSMS()
    {

         $secret = 'sad-s9d0932-wej9GfRT3S234324DSFSDERTTYJGH-0023';
         
         $arParams['username']      = $this->getParamString('username') ? $this->getParamString('username') : 'username';
         $arParams['type']          = $this->getParamString('type') ? $this->getParamString('type') : 'type';
         $arParams['code']          = $this->getParamString('code') ? $this->getParamString('code') : 'code';
         $arParams['short_code']    = $this->getParamString('short_code') ? $this->getParamString('short_code') : 'short_code';
         $arParams['mobile']        = $this->getParamString('mobile') ? $this->getParamString('mobile') : 'mobile';
         $arParams['money']         = $this->getParamString('money') ? $this->getParamString('money') : 'money';
         $arParams['signature']     = $this->getParamString('signature') ? $this->getParamString('signature') : 'signature';
		
        $data = "username=". $arParams['username'] . "&type=" . $arParams['type'] . "&code=" . $arParams['code'] . "&short_code=" . $arParams['short_code'] . "&mobile=" . $arParams['mobile'] . "&money=" . $arParams['money'];
        $signature_home = hash_hmac("sha256", $data, $secret);
	
	//die($signature_home.'--'.$arParams['signature']);

        if($signature_home == $arParams['signature'])
        {

            if($arParams['code'] == 8038)
            {
                $du = $this->db->query('SELECT * FROM user WHERE username = "'.$arParams['username'].'"');
                if($du->num_rows() == 0)
                {//die('sdf');
                    $arResponse['status'] = 202;
                    $arResponse['username'] = null;
                    return (object)$arResponse;
                }
                $duser = $du->row_object();
                $id_user = $duser->id;
                $coinplus = 150;
                $revice_money = $arParams['money'];
                $this->db->update('user',array("coin" => ($duser->coin + $coinplus),'total_amount' => $duser->total_amount + $revice_money ),"id = '".$id_user."'");
                
                $codeTrade = 'GAME-'.date('YmdHis').'-'.$this->generateCode(8);
                $content = 'Nạp tiền vào tài khoản bằng sms ngày '.date('H:i:s d/m/Y').' <b>Mã giao dịch:</b>' .$codeTrade;
                
                $data_trade = array('codeTrade' => $codeTrade, 'content' => $content, 'id_user' => $id_user, 'statusTrade' => 1, 'created' => date('Y-m-d H:i:s'));
                
                $this->db->insert('logTrade', $data_trade);
                
                $dsc = array('username'      => $arParams['username'],
								'sms'        => $arParams['code'],
								'money'      => $arParams['money'],
								'mobile'     => $arParams['mobile'],
								'type'	     => $arParams['type'],
                                'code_sms'   => $arParams['short_code'],
								'type_portal'=> 'PORTAL_GV',
								'created'    => date('Y-m-d H:i:s')
							);
                $this->db->insert('log_sms', $dsc);
                
                $arResponse['status'] = 200;
                $arResponse['username'] = $arParams['username'];
                return (object)$arResponse;
                
            }else{
                $arResponse['status'] = 201;
                $arResponse['username'] = null;
                return (object)$arResponse;
            }
            
            
        }

         
         
    }
    
}
